1 module test.linux_distros; 2 3 unittest 4 { 5 import db_constraints; 6 7 class Distros 8 { 9 class Distro 10 { 11 private int _id; 12 private string _name; 13 @PrimaryKeyColumn @NotNull 14 @property int id() 15 { 16 return _id; 17 } 18 @property void id(int value) 19 { 20 setter(_id, value); 21 } 22 @UniqueConstraintColumn!("uc_Distros_name") 23 @property string name() 24 { 25 return _name; 26 } 27 @property void name(string value) 28 { 29 // this._name = value; 30 // this._containsChanges = true; 31 // this.outer.itemChanged("name", this._key); 32 // this.outer.itemChanged("uc_Distros_name_key", this._key); 33 setter(_name, value); 34 } 35 this(int id_, string name_) 36 { 37 this._id = id_; 38 this._name = name_; 39 initializeKeyedItem(); 40 } 41 mixin KeyedItem!(); 42 } 43 mixin KeyedCollection!(Distro); 44 } 45 Distros GetFromDB() 46 { 47 auto distros = new Distros(); 48 distros.add( 49 [ 50 distros..new Distro(1, "Fedora"), 51 distros..new Distro(2, "Ubuntu"), 52 distros..new Distro(3, "Linux Mint"), 53 distros..new Distro(4, "Debian"), 54 distros..new Distro(5, "CentOS") 55 ]); 56 return distros; 57 } 58 59 auto distros = GetFromDB(); 60 assert(distros.length == 5); 61 assert(distros[1].name == "Fedora"); 62 distros[3].name = "Mint"; 63 assert(distros[3].name == "Mint"); 64 assert(distros[3].outer is distros); 65 }